// 寻找主频率函数
// 参数:
//   magnitude - 幅度谱向量
//   sampleRate - 音频采样率（Hz）
//   fftLength - FFT点数（原始信号长度）
// 返回值:
//   主导频率值（Hz）
double findDominantFrequency(const std::vector<double> &magnitude,
                             double sampleRate,
                             size_t fftLength) {
    size_t peakIndex = 0;
    double maxVal = 0.0;

    // 确保在有效范围内搜索
    size_t searchLength = magnitude.size();
    if (searchLength == 0) {
        std::cerr << "Error: Empty magnitude vector" << std::endl;
        return 0.0;
    }
    // 遍历整个幅度谱
    for (size_t i = 0; i < searchLength; ++i) {
        // 寻找最大幅度值及其索引
        if (magnitude[i] > maxVal) {
            maxVal = magnitude[i];      // 更新最大值
            peakIndex = i;              // 更新峰值索引
        }
    }

    // 计算主导频率：
    //  频率分辨率 = 采样率 / FFT点数
    //  实际频率 = 峰值索引 × 频率分辨率
    return static_cast<double>(peakIndex) * (sampleRate / fftLength);
}
